﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class 游戏裁判 : MonoBehaviour
{
    public 相机跟随 左相机;
    public 相机跟随 右相机;

    public GameObject 丛林坦克;
    public GameObject 沙漠坦克;

    public Transform 丛林坦克出生地;
    public Transform 沙漠坦克出生地;

    public GameObject 丛林坦克预制体;
    public GameObject 沙漠坦克预制体;

    public 坦克血量 丛林坦克血量;
    public 坦克血量 沙漠坦克血量;

    public Text 丛林坦克记分牌;
    public Text 沙漠坦克记分牌;

    public Text 结果提示文本;
    public GameObject 结果提示面板;

    public 最高分管理器 最高分;

    private int 丛林坦克分数 = 0;
    private int 沙漠坦克分数 = 0;


    public 摇杆 左摇杆;
    public 摇杆 右摇杆;

    public Button 左按钮;
    public Button 右按钮;

    public GameObject 主菜单;

    public GameObject 菜单按钮;

    //public 颜色渐渐透明 丛林坦克掉血提示;
    //public 颜色渐渐透明 沙漠坦克掉血提示;

    void Start()
    {
        if (菜单按钮) 菜单按钮.SetActive(true);
        if(结果提示面板) 结果提示面板.SetActive(false);
        if (主菜单) 主菜单.SetActive(true);
    }


    void Update()
    {
        if (!沙漠坦克血量.已经挂了 && !丛林坦克血量.已经挂了)
        {
            if (沙漠坦克血量.血量 <= 0 || 丛林坦克血量.血量 <= 0)
            {
                if (丛林坦克血量.血量 > 0)
                {
                    丛林坦克分数 += 1;
                    if (结果提示文本) 结果提示文本.text = "左边丛林坦克胜利";
                    沙漠坦克血量.已经挂了 = true;
                }

                if (沙漠坦克血量.血量 > 0)
                {
                    沙漠坦克分数 += 1;
                    if (结果提示文本) 结果提示文本.text = "右边沙漠坦克胜利";
                    丛林坦克血量.已经挂了 = true;
                }

                if(沙漠坦克血量.血量 <= 0 && 丛林坦克血量.血量 <= 0)
                {
                    if (结果提示文本) 结果提示文本.text = "平局";
                }

                更新分数();

                // 重启游戏();
                if (结果提示面板) 结果提示面板.SetActive(true);
                if (菜单按钮) 菜单按钮.SetActive(false);
            }
        }
    }

    void 更新分数()
    {
        if (丛林坦克记分牌)
        {
            丛林坦克记分牌.text = 丛林坦克分数 + "";
        }

        if (沙漠坦克记分牌)
        {
            沙漠坦克记分牌.text =   "" + 沙漠坦克分数;
        }

        if (最高分)
        {
            if (最高分.设置丛林坦克分数(丛林坦克分数)
                ||最高分.设置沙漠坦克分数(沙漠坦克分数))
            {
                结果提示文本.text += "\n<color=red>破纪录！！！</color>";
            }
        }
    }

    public void 重启游戏()
    {
        if (结果提示文本) 结果提示文本.text = "上一场：" + 结果提示文本.text;
        if (结果提示面板) 结果提示面板.SetActive(false);
        if(菜单按钮) 菜单按钮.SetActive(true);

        if (丛林坦克) Destroy(丛林坦克);

        if (沙漠坦克) Destroy(沙漠坦克);

        丛林坦克 = Instantiate(丛林坦克预制体, 丛林坦克出生地.position, 丛林坦克出生地.rotation);
        沙漠坦克 = Instantiate(沙漠坦克预制体, 沙漠坦克出生地.position, 沙漠坦克出生地.rotation);

        // 血量判定
        丛林坦克血量 = 丛林坦克.GetComponent<坦克血量>();
        沙漠坦克血量 = 沙漠坦克.GetComponent<坦克血量>();

        // 相机
        左相机.跟随目标 = 丛林坦克.GetComponent<坦克移动>().相机辅助.transform;
        右相机.跟随目标 = 沙漠坦克.GetComponent<坦克移动>().相机辅助.transform;

        // 摇杆
        丛林坦克.GetComponent<坦克移动>().触控摇杆 = 左摇杆;
        沙漠坦克.GetComponent<坦克移动>().触控摇杆 = 右摇杆;
        
        // 掉血提示
        //丛林坦克.GetComponent<坦克血量>().坦克掉血提示 = 丛林坦克掉血提示;
        //沙漠坦克.GetComponent<坦克血量>().坦克掉血提示 = 沙漠坦克掉血提示;
        
        // 发射炮弹按钮
        左按钮.onClick.AddListener(丛林坦克.GetComponent<坦克发射>().发射炮弹);
        右按钮.onClick.AddListener(沙漠坦克.GetComponent<坦克发射>().发射炮弹);
    }
}
